package request

type ArgumentsReq struct {
	Message  []Message `json:"messages" binding:"required"`
	Model    string    `json:"model" binding:"required"`
	SafeMode string    `json:"safe_mode" binding:"required"`
}

type Message struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type ArgumentsResp struct {
	Id      string `json:"id"`
	Object  string `json:"object"`
	Created int64  `json:"created"`
	Model   string `json:"model"`
	Choices any    `json:"choices"`
	Usage   any    `json:"usage"`
}
type GreditGrantsReq struct {
	//OpenID   string `json:"open_id"`
	//NickName string `json:"nick_name"  binding:"required"`
}
type Greditgrants struct {
	Object         string `json:"object"`
	TotalGranted   int    `json:"total_granted"`
	TotalUsed      int    `json:"total_used"`
	TotalAvailable int    `json:"total_available"`
	ExpireAt       int64  `json:"expire_at"`
}

type WXLogin struct {
	Code      string `json:"code"  binding:"required"`
	NickName  string `json:"nickName"`
	AvatarUrl string `json:"avatarUrl"`
	Gender    int    `json:"gender"`
}
type WXLoginResp struct {
	NickName     string `json:"nick_name"` // 名字
	IsVIP        int    `json:"is_vip"`    // 是否是会员,0表示会员，1表示非会员
	AvatarUrl    string `json:"avatarUrl"` // 头像数据
	Gender       int    `json:"gender"`    // 性别 1表示男，0表示女
	OpenID       string `json:"open_id"`
	Token        string `json:"token"`
	ExpireAt     int64  `json:"expireAt"`
	RefreshAfter int64  `json:"refreshAfter"`
	CreateAt     string `json:"create_at"`
}

//	type GetUserInfoReq struct {
//		NickName string `json:"nick_name" form:"nicke_name"`
//		OpenID   string `json:"open_id" form:"open_id" binding:"required"`
//	}
type GainSmCodeReq struct {
	Mobile string `form:"mobile" binding:"required"`
	//SMCode int `from:"sm_code" binding:"required"`
}

type SMCodeReq struct {
	Mobile string `json:"mobile" binding:"required"`
	Code   string `json:"code" binding:"required"`
}

type SearchUser struct {
	SearchName    string `json:"search_name" binding:"required"`
	SearchContent string `json:"search-content" binding:"required"`
}

type ToDoReq struct {
	Title     string `json:"title" binding:"required"`
	Desc      string `json:"desc" binding:"required"`
	Priority  *int   `json:"priority"`
	ToDoClass *int   `json:"to_do_class"`
	Inform    *int   `json:"inform"`
	Convey    string `json:"convey" binding:"required"`
	StartTime string `json:"start_time" binding:"required"`
	OverTime  string `json:"over_time" binding:"required"`
	Remind    *int   `json:"remind" binding:"required"`
}
type FinishToDoReq struct {
	ID int `json:"id" form:"id" binding:"required"`
}

type DelToDoReq struct {
	ID int `json:"id" form:"id" binding:"required"`
}
type ToDoState struct {
	StateCode string `json:"state_code" form:"state_code" binding:"required"`
	OverTime  string `json:"over_time" form:"over_time"`
}

type SystemParameter struct {
	Email string `json:"email" binding:"required"`
}

type SystemParameterResp struct {
	ID     uint   `json:"id"`
	UserID string `json:"user_id"`

	Email     string `json:"email"`
	CreatedAT string `json:"created_at"`
	UpdatedAT string `json:"updated_at"`
}

type TODOUPDATEReq struct {
	ID        int    `form:"id" json:"id" binding:"required"`
	Title     string `form:"title" json:"title" binding:"required"`
	Desc      string `form:"desc" json:"desc" binding:"required"`
	Priority  *int   `form:"priority" json:"priority" binding:"required"`
	ToDoClass *int   `form:"to_do_class" json:"to_do_class" binding:"required"`
	Inform    *int   `form:"inform" json:"inform" binding:"required"`
	Convey    string `form:"convey" json:"convey" binding:"required"`
	StartTime string `form:"start_time" json:"start_time" binding:"required"`
	OverTime  string `form:"over_time" json:"over_time" binding:"required"`
}

type TODOUPDATERes struct {
	ID          int    `json:"id"`
	Title       string `json:"title" binding:"required"`
	Desc        string `json:"desc" binding:"required"`
	PriorityID  *int   `json:"priority"`
	ToDoClassID *int   `json:"to_do_class"`
	Inform      *int   `json:"inform"`
	Convey      string `json:"convey" binding:"required"`
	StartTime   string `json:"start_time" binding:"required"`
	OverTime    string `fjson:"over_time" binding:"required"`
}

type ConcretenessTODOReq struct {
	ID uint `form:"id" json:"id" binding:"required"`
}
